home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / DBVGAL17.ARJ / SRC_C.ARJ / VIDLIB8.C < prev    next >
Text File  |  1992-01-26  |  4KB  |  150 lines

  1. #include <dos.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <conio.h>
  6. #include <mem.h>
  7. #include "vidlib.h"
  8.  
  9.  
  10. int Vfill256(unsigned dx, unsigned dy, unsigned sdx, unsigned sdy,
  11.                 unsigned color)
  12. {
  13.    char *dest;
  14.  
  15.    dest=(char *)normalize(_screen_start + (dy*_screen_width) +dx);
  16.    if (vgadebug) {
  17.        fprintf(vgadebug,"\nVfill256(dx=%u, %u, sdx=%u, sdy=%u, color=%u)\n",
  18.                         dx,dy,sdx,sdy,color);
  19.        fflush(vgadebug);
  20.    }
  21.    while (sdy>0) {
  22.        setmem(dest, sdx, color);
  23.        dy++; sdy--;
  24.        dest=(char *)normalize(dest+_screen_width);
  25.    }
  26.    return(1);
  27. }
  28.  
  29. /* video to video copy */
  30. int Vcopy256( unsigned dx, unsigned dy,
  31.               unsigned sx, unsigned sy, unsigned sdx, unsigned sdy)
  32. {
  33.    char *dest;
  34.    char *src;
  35.    unsigned int yo;
  36.  
  37.    /* check parameters */
  38.    if ( (long)(sdx * sdy) > 0xFFFFL ) return(0);
  39.    if ( vgadebug != NULL ) {
  40.       sprintf(tdbg,"Vc256: dx=%u, dy=%u, sx=%u, sy=%u, sdx=%u, sdy=%u\n",
  41.           dx, dy, sx, sy, sdx, sdy);
  42.       fputs(tdbg,vgadebug);
  43.    }
  44.  
  45.    dest=(char *)normalize( _screen_start + dy*_screen_width + dx);
  46.    src= (char *)normalize( _screen_start + sy*_screen_width + sx);
  47.    if ( vgadebug != NULL ) {
  48.       sprintf(tdbg,"     : dest=%Fp, src=%Fp\n", dest, src);
  49.       fputs(tdbg,vgadebug);
  50.    }
  51.    for (yo=0; yo < sdy; yo++) {
  52.        memcpy(dest, src, sdx);
  53.        dest=(char *)normalize( dest + _screen_width);
  54.        src= (char *)normalize( src  + _screen_width);
  55.    }
  56.    return(1);
  57. }
  58.  
  59. /* memory to video copy */
  60. int Vdisp256(unsigned dx, unsigned dy,
  61.              char *s, unsigned sw, unsigned sl,
  62.              unsigned sx, unsigned sy, unsigned sdx, unsigned sdy)
  63. {
  64.    char *dest;
  65.    char *src;
  66.    unsigned int yo;
  67.  
  68.    /* check parameters */
  69.    if ( (sx + sdx > _screen_width) || ( sy + sdy > _memory_length) ||
  70.         (sx + sdx > sw) || ( sy + sdy > sl) ||
  71.         ((long)(sdx * sdy) > 0xFFFFL)) {
  72.        printf("Parameter error.\n");
  73.        return(0);
  74.    }
  75.    if ( vgadebug != NULL ) {
  76.      sprintf(tdbg,"Vd256: dx=%u, dy=%u\n",
  77.                  dx, dy);
  78.      fputs(tdbg,vgadebug);
  79.      sprintf(tdbg,"       s=%Fp, sw=%u, sl=%u, sx=%u, sy=%u, sdx=%u, sdy=%u\n",
  80.                  s, sw, sl, sx, sy, sdx, sdy);
  81.      fputs(tdbg,vgadebug);
  82.    }
  83.  
  84.    if ( BIOScrtmode > 0x13 ) {
  85.       printf("VESA not yet fully implemented.\n");
  86.       return(0);
  87.    }
  88.  
  89.    dest=(char *)normalize( _screen_start + dy*_screen_width + dx);
  90.    src= (char *)normalize( s + sy*sw + sx);
  91.    if ( vgadebug != NULL ) {
  92.      sprintf(tdbg,"     : dest=%Fp, src=%Fp\n",
  93.                  dest, src);
  94.      fputs(tdbg,vgadebug);
  95.    }
  96.    for (yo=0; yo < sdy; yo++) {
  97.        memcpy(dest, src, sdx);
  98.        dest=(char *)normalize( dest + _screen_width);
  99.        src= (char *)normalize( src  + sw);
  100.    }
  101.    return(1);
  102. }
  103.  
  104. /* video to memory copy */
  105. int Vcapt256(char *d, unsigned dw, unsigned dl,
  106.                       unsigned dx, unsigned dy,
  107.                       unsigned sx, unsigned sy, unsigned sdx, unsigned sdy)
  108. {
  109.    char *dest;
  110.    char *src;
  111.    unsigned int yo;
  112.  
  113.    /* check parameters */
  114.    if ( (sx + sdx > _screen_width) || ( sy + sdy > _memory_length) ||
  115.         (sx + sdx > dw) || ( sy + sdy > dl) ||
  116.         ((long)(sdx * sdy) > 0xFFFFL)) {
  117.        printf("Parameter error.\n");
  118.        return(0);
  119.    }
  120.    if ( vgadebug != NULL ) {
  121.      sprintf(tdbg,"Vct256: dx=%u, dy=%u\n",
  122.                  dx, dy);
  123.      fputs(tdbg,vgadebug);
  124.      sprintf(tdbg,"       d=%Fp, dw=%u, dl=%u, sx=%u, sy=%u, sdx=%u, sdy=%u\n",
  125.                  d, dw, dl, sx, sy, sdx, sdy);
  126.      fputs(tdbg,vgadebug);
  127.    }
  128.  
  129.    if ( BIOScrtmode > 0x13 ) {
  130.       printf("VESA not yet fully implemented.\n");
  131.       return(0);
  132.    }
  133.  
  134.    dest=(char *)normalize( d + dy*dw + dx);
  135.    src= (char *)normalize( _screen_start + sy*_screen_width + sx);
  136.    if ( vgadebug != NULL ) {
  137.      sprintf(tdbg,"     : dest=%Fp, src=%Fp\n",
  138.                  dest, src);
  139.      fputs(tdbg,vgadebug);
  140.    }
  141.    for (yo=0; yo < sdy; yo++) {
  142.        memcpy(dest, src, sdx);
  143.        dest=(char *)normalize( dest + dw);
  144.        src= (char *)normalize( src  + _screen_width);
  145.    }
  146.    return(1);
  147. }
  148.  
  149. 
  150.